﻿using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;

namespace Adalbertus.BudgetPlanner.Services.CodeContracts
{
    [ContractClassFor(typeof(IBaseService<>))]
    public class IBaseServiceContract<TDomain> : IBaseService<TDomain>
    {
        public void Save(TDomain domain)
        {
            Contract.Requires<ArgumentNullException>(domain != null);
            throw new NotImplementedException();
        }

        public void Save(IEnumerable<TDomain> domains)
        {
            Contract.Requires<ArgumentNullException>(domains != null);
            throw new NotImplementedException();
        }

        public void Remove(TDomain domain)
        {
            Contract.Requires<ArgumentNullException>(domain != null);
            throw new NotImplementedException();
        }

        public TDomain GetById(int id)
        {
            throw new NotImplementedException();
        }

        public IEnumerable<TDomain> GetAll()
        {
            Contract.Ensures(Contract.Result<IEnumerable<TDomain>>() != null);
            throw new NotImplementedException();
        }
    }
}
